# -*- coding: utf-8 -*-
"""
@Time    : 2024/10/8 18:22 
@Author  : ZhangShenao 
@File    : 1.读写文本文件.py 
@Desc    : 读写文本文件
"""
import time


def read_whole_file():
    """一次性读取整个文件"""

    # 使用try-except语法,进行异常捕获
    # 提升代码健壮性
    try:
        # 调用open函数,读写文件
        # 使用with关键字,进行上下文管理
        # 文件对象会在离开上下文环境时,自动调用close函数,释放资源
        with open(
                file="致橡树.txt",  # 指定文件名,可以使用绝对路径或相对路径
                mode="r",  # 指定文件模式,默认为r
                encoding="utf-8"  # 指定文件编码,默认值是None,那么在读取文件时使用的是操作系统默认的编码
        ) as f:
            # 读取文件内容
            content = f.read()

            # 打印内容
            print(content)
    except FileNotFoundError:
        print('无法打开指定的文件!')
    except LookupError:
        print('指定了未知的编码!')
    except UnicodeDecodeError:
        print('读取文件时解码错误!')


def read_in_line():
    """按行读取文件"""

    with open(file="致橡树.txt", mode="r", encoding="utf-8") as f:
        # 使用for-in语法,逐行读取文件
        for line in f:
            print(line, end="")
            time.sleep(0.5)


def read_into_list():
    """将文件内容读入列表"""

    with open(file="致橡树.txt", mode="r", encoding="utf-8") as f:
        # 调用readlines函数,将文件按行读取到列表中
        lines = f.readlines()
        print(lines)


def write_file():
    """向文件写入内容"""

    # 指定mode为a,即追加写入
    with open(file="1000以内的偶数.txt", mode="a", encoding="utf-8") as f:
        for i in range(1, 1001):
            if i % 2 == 0:
                f.write(str(i) + '\n')


if __name__ == '__main__':
    # read_whole_file()

    # read_in_line()

    # read_into_list()

    write_file()
